Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Hermes] Bump Hermes #45220

Merged
merged 2 commits into from
Jul 1, 2024
Merged

[Hermes] Bump Hermes #45220

merged 2 commits into from
Jul 1, 2024

Conversation

cipolleschi
Copy link
Contributor

@cipolleschi cipolleschi commented Jun 28, 2024

Summary:

This PR bumps hermes in 0.74. This is needed because we need the microTask queue that has been shipped in Hermes

Changelog:

[Internal] - Bump Hermes

Test Plan:

CCI is green again for build_android

@facebook-github-bot facebook-github-bot added CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Facebook Partner: Facebook Partner labels Jun 28, 2024
@cipolleschi cipolleschi changed the base branch from main to 0.74-stable June 28, 2024 13:49
Comment on lines +129 to +131
void queueMicrotask(const jsi::Function& callback) override {
return plain().queueMicrotask(callback);
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

facebook/hermes@0a632b7 adds this change in JSI. We need it in React Native as well

@@ -544,6 +547,10 @@ class WithRuntimeDecorator : public RuntimeDecorator<Plain, Base> {
Around around{with_};
return RD::evaluatePreparedJavaScript(js);
}
void queueMicrotask(const Function& callback) override {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

facebook/hermes@0a632b7 adds this change in JSI. We need it in React Native as well

/// its event loop implementation.
///
/// \param callback a function to be executed as a microtask.
virtual void queueMicrotask(const jsi::Function& callback) = 0;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

facebook/hermes@7bda0c2 adds this change in JSI. We need it in React Native as well

@cipolleschi cipolleschi marked this pull request as ready for review June 28, 2024 14:12
Summary:
Changelog: [internal]

## Context

We want to enable the new React Native event loop by default for all users on the new RN architecture (on the bridgeless initialization path more concretely), which requires support for microtasks in all the JS engines that the support (Hermes already has it, JSC doesn't).

## Changes

This adds initial support for microtasks in JSC, so we can schedule and execute microtasks in this runtime.

One limitation about this approach is that, AFAIK, the public API for JSC doesn't allow us to customize its internal microtask queue or specify the method to be used by its built-in `Promise` or native `async function`, so we're forced to continue using a polyfill in that case (which uses `setImmediate` that will be mapped to `queueMicrotask`).

Reviewed By: NickGerleman

Differential Revision: D54302534

fbshipit-source-id: 47f71620344a81bc6624917f77452106ffbf55a3
@analysis-bot
Copy link

Platform Engine Arch Size (bytes) Diff
android hermes arm64-v8a 17,857,519 -2,459,486
android hermes armeabi-v7a n/a --
android hermes x86 n/a --
android hermes x86_64 n/a --
android jsc arm64-v8a 21,211,588 -2,302,058
android jsc armeabi-v7a n/a --
android jsc x86 n/a --
android jsc x86_64 n/a --

Base commit: 9833338
Branch: main

@Titozzz Titozzz merged commit 3a1ff94 into 0.74-stable Jul 1, 2024
51 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Facebook Partner: Facebook Partner Pick Request
Projects
None yet
5 participants